# $Id: models.py 7557b5d4d82b 2012/12/02 09:07:16 pgurumur $
# Copyright (c) 2009 Prabhu Gurumurthy  <pgurumur@gmail.com>
# 
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#

__version__ = "$Revision: 7557b5d4d82b $"
__author__ = "$Author: pgurumur $"

from django.db import models

from djanet.db import models as model
from djanet.db import netdb, query
from djanet.lib import stdlib
from djanet.utils import grid

class ConsoleServer(model.BaseModel):
   console_server = models.ForeignKey(netdb.Device, name = "device_id")

   class Meta:
      db_table = 'console_server'

   def __str__(self):
      return stdlib.my_str(self.console_server)

   def get_ip(self):
      return self.ip

   get_ip.short_description = 'IP Address'
   ip = property(fget = lambda self: self.console_server.ip)

class TerminalServer(model.BaseModel):
   console_server = models.ForeignKey(ConsoleServer, name = "console_id")
   console_port = models.IntegerField(help_text = "Console port",
         name = "console_port")
   physical_port = models.CharField(max_length = 15,
         help_text = "Physical port on the terminal server",
         name = "physical_port")
   address = model.IPAddressField(help_text = "IP address of the console port",
         null = True, blank = True, name = "address")

   class Meta:
      db_table = 'console_mapping'
      ordering = ['console_port', 'physical_port', 'console_server', 'address']

   def __str__(self):
      return stdlib.my_str(
            "%s: %d" %(str(self.console_server), int(self.console_port)))

